Setting collectionViewLayout somehow clear the cell class registrations, causing makeItem(withIdentifier:for:) to dequeue the cell from nib unexpectedly.
This seems like a bug to me, so I fire a feedback FB14769347.
As a workaround, set collectionViewLayout BEFORE calling your register(_:for:) methods.